const express = require("express");
// const multer = require("multer");
const { expressjwt: expressJWT } = require("express-jwt");
const upload = require("../utils/upload");
const config = require("../utils/config");
const apiCon = require("../controllers/apiController");
const userCon = require("../controllers/userController");

let router = express.Router();

router.use(
  expressJWT({ secret: config.jwt.secret, algorithms: ["HS256"] }).unless({
    path: config.jwt.unlessPath, // 跳过token验证
  })
);

// 配置中间件-错误捕获
router.use(function (err, req, res, next) {
  // token解析失败
  const authorization = req.headers["authorization"];
  if (!authorization) {
    return res.status(401).json({
      code: config.codeObj.fail,
      msg: "用户未登录",
    });
  }
  if (err.name === "UnauthorizedError") {
    return res.status(401).json({
      code: config.codeObj.fail,
      msg: "登录过期，请重新登录",
    });
  }
  // try {
  //   const token = authorization.split(" ")[1];
  //   const data = this.jwtService.verify(token);
  //   console.log(data);
  // } catch (e) {
  //   return res.status(401).json({
  //     code: config.codeObj.fail,
  //     msg: "登录过期，请重新登录",
  //   });
  // }
  // if (err.name === "UnauthorizedError") {
  //   return res.status(401).json({
  //     code: config.codeObj.fail,
  //     msg: "登录过期，请重新登录",
  //   });
  // }
  // res.status(401).json({
  //   code: config.codeObj.fail,
  //   msg: "未知错误",
  // });
  // next();
});

// 测试接口
// 查询
router.post("/test/query", apiCon.query);
// 新增
router.post("/test/add", apiCon.add);
// 删除
router.post("/test/delete/:id", apiCon.delete);
// 表单
router.post("/test/formData", upload, apiCon.formData);

// 上传文件
router.post("/test/upload", upload, apiCon.uploadFile);

// 查看文件
router.post("/test/review", apiCon.reviewFile);

// router.post("/uploadFile", upload, function (req, res) {
//   if (req.files) {
//     if (req.files.length > 0) {
//       res.end("123");
//     } else {
//       res.end("123");
//     }
//   } else {
//     res.end("未上传文件");
//   }
// });

// 登录
router.post("/user/login", userCon.login);

// 获取用户信息
router.post("/user/getUserInfo", userCon.getUserInfo);

// 刷新Token
router.get("/user/refreshToken", userCon.refreshToken);

module.exports = router;
